package com.creator.jobmatcherresume;

import com.creator.jobmatcherresume.entity.JobPosition;
import com.creator.jobmatcherresume.entity.Resume;
import com.creator.jobmatcherresume.service.JobMatcherService;
import com.creator.jobmatcherresume.tools.PercentageConverter;
import com.creator.jobmatcherresume.tools.TextPreprocessor;

import java.util.List;
import java.util.Map;

/**
 * @Author: Hank.GUO
 * @Date: 2025/3/25 22:14
 * @Email: guohaihang0512@163.com
 * @Description
 */
// 使用示例
public class TestMain {
    public static void main(String[] args) {
        // 初始化数据
        JobPosition job = new JobPosition();
        job.setId("J001");
        job.setDescription("- 学历要求：计算机相关专业本科及以上\n" +
                "- 语言基础：\n" +
                "  ▶ 掌握Java SE核心语法（集合/IO/多线程）\n" +
                "  ▶ 了解JVM内存模型与GC机制（新生代/老年代）\n" +
                "- 框架能力：\n" +
                "  ▶ 熟悉Spring/Spring Boot基础开发\n" +
                "  ▶ 了解MyBatis/Hibernate等ORM框架\n" +
                "- 数据库：\n" +
                "  ▶ 能编写基础SQL语句（增删改查/联表查询）\n" +
                "  ▶ 了解MySQL索引原理与事务特性\n" +
                "- 工具链：\n" +
                "  ▶ 会使用Git进行版本控制\n" +
                "  ▶ 熟悉Maven/Gradle构建工具\n");

        Resume resume = new Resume();
        resume.setId("R001");
        resume.setContent("王小明 | Java开发工程师\u200C\n" +
                "\u200C联系电话\u200C：138-1234-5678 | \u200C邮箱\u200C：wangxm@email.com\n" +
                "\u200C教育背景\u200C：XX大学 软件工程专业 本科 2024届" +
                "掌握Java SE核心语法（集合/IO/多线程）" +
                "技能总结：- 编程语言：Java基础（熟悉集合、IO、多线程）" +
                "了解JVM内存模型与GC机制（新生代/老年代）\n" +
                "- 开发框架：Spring/Spring Boot、MyBatis/Hibernate基础开发（能独立搭建Web项目）\n" +
                "- 数据库：精通MySQL索引原理与事务特性\n" +
                "- 开发工具：IntelliJ IDEA、Git、Maven\n" +
                "- 代码管理工具：Maven/Gradle构建工具" +
                "- 基础能力：HTML/CSS/JavaScript基础、Linux常用命令" +
                "项目经验:- 1. 图书管理系统（个人项目）" +
                "技术架构：Spring Boot + Thymeleaf + MyBatis  \n" +
                "- 实现功能：  \n" +
                "  • 用户登录与权限控制（Session实现）  \n" +
                "  • 图书借阅记录管理（事务处理）  \n" +
                "  • Excel格式数据导出（Apache POI）  \n" +
                "- 项目成果：完成核心模块开发，代码量3000+行  " +
                "\u200C2. 在线考试系统（团队项目）：- 技术架构：Spring MVC + MySQL + Redis  \n" +
                "- 负责内容：  \n" +
                "  • 试卷生成模块（随机算法实现）  \n" +
                "  • 考试倒计时功能（JavaScript定时器）  \n" +
                "  • 试题缓存优化（Redis存储热点数据）  \n" +
                "- 项目成果：系统支持500+用户并发操作  \n" +
                "证书与荣誉：✓ 全国计算机等级考试二级Java（优秀）  \n" +
                "✓ 校级编程竞赛三等奖  \n" +
                "✓ CET-4（具备英文文档阅读能力）  \n" +
                "附加信息：- GitHub：github.com/wangxmcode（上传个人项目源码）\n" +
                "- 技术博客：CSDN专栏更新Java学习笔记20+篇\n" +
                "- 学习记录：完成《Java核心技术卷I》精读与实践\n");

        // 处理关键词
        TextPreprocessor processor = new TextPreprocessor();
        job.setKeywords(processor.extractKeywords(job.getDescription()));
        resume.setKeywords(processor.extractKeywords(resume.getContent()));

        // 执行匹配
        JobMatcherService matcher = new JobMatcherService();
        Map<String, Double> results = matcher.matchResumeToJobs(resume, List.of(job));

        for (String s : results.keySet()) {
            System.out.println(s+", 最终匹配的分数: " + PercentageConverter.formatAsPercentage(results.get(s)));
        }

    }
}

